#ifndef IVALIDATOR_RULE_H
#define IVALIDATOR_RULE_H

#include <QtCore/QSharedPointer>

QT_BEGIN_NAMESPACE
class QAction;
QT_END_NAMESPACE

namespace core
{
class IContainerDocument;
class IDocument;
}

namespace swp
{

class IValidatorRule
{
public:
    virtual ~IValidatorRule() {}

    virtual bool isProjectWide() const = 0;
    virtual bool validate(
        const QSharedPointer<core::IContainerDocument>& document,
        QAction*& reportClickAction, QString& reportText) const = 0;
    virtual bool validate(const QSharedPointer<core::IDocument>& document,
        QAction*& reportClickAction, QString& reportText) const = 0;
};

} // namespace swp

#endif
